package com.lyz.dataStructure.LeetCode100;



/*
* 给你两个非空 的链表，表示两个非负的整数。它们每位数字都是按照逆序的方式存储的，并且每个节点只能存储一位数字。

请你将两个数相加，并以相同形式返回一个表示和的链表。

你可以假设除了数字0之外，这两个数都不会以0开头。

4 -> 3 -> 6
3 -> 7 -> 2

*
* */

/**
 * 类描述：
 *
 * @ClassName 两数相加2
 * @Description:
 * @Author: liyaozhou
 * @Date: 2021/8/8 20:01
 */

public class 两数相加2 {

   public static  ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode head = null,tail = null;
        int carry = 0;
        while(l1 !=null || l2 !=null){
            int n1 = l1 != null ? l1.val : 0;
            int n2 = l2 != null ? l2.val : 0;
            int sum = n1 + n2 + carry ;
            if (head == null){
                head = tail = new ListNode(sum %10);
            } else {
                tail.next = new ListNode(sum % 10);
                tail = tail.next;
            }

            carry = sum / 10;
            if (l1 !=null){
                l1 = l1.next;
            }
            if (l2 !=null){
                l1 = l1.next;
            }
        }
        if (carry > 0){
            tail.next = new ListNode(carry);
        }
        return head;
   }
}























